#!/usr/bin/env python
#-*- coding:utf-8 -*
#
# LibKontrolcu
#  - Kontrolcu Kütüphanesi
#
# Geliştiriciler:
#  - Osman KARAGÖZ <osmank3@gmail.com>
#  - Taha Doğan Güneş <tdgunes@gmail.com>
# Belgelendirici:
#  - Okan Okuroğulları <ookurogullari@gmail.com>
#
# Web Sitesi: http://code.google.com/p/kontrolcu
# Lisansı: GPL v3 ile lisanslanmıştır.
#
# Yardım dökümanlarını http://code.google.com/p/kontrolcu/w/list 
#                                     adresinden bulabilirsiniz.


import hashlib, urllib, os
hatadurum = []
sondurum=[]

def toplamver(kontip, dosyagir):
    global toplam
    dosya = open(dosyagir).read()
    a = kontip()
    a.update(dosya)
    toplam = a.hexdigest()

def check(doskont):
    global hatadurum, sondurum
    adres = urllib.urlopen(doskont[0])
    kont1 = adres.read().decode("utf8")
    adres.close()
    kont2 = kont1.split("\n")
    n = 0
    while len(kont2)>n+1:
        kontlistesi = kont2[n].split()
        kontop = kontlistesi[0]
        if len(kontop) == 32:
            kontip=hashlib.md5
        elif len(kontop) == 40:
            kontip=hashlib.sha1
        elif len(kontop) == 56:
            kontip=hashlib.sha224
        elif len(kontop) == 64:
            kontip=hashlib.sha256
        elif len(kontop) == 96:
            kontip=hashlib.sha384
        elif len(kontop) == 128:
            kontip=hashlib.sha512
        else:
            if doskont[0][:5] == "http:" or doskont[0][:4] == "ftp:" or doskont[0][:6] == "https:":
                hatano = 001
                hatadurum.append(hatano)
                break
            else:
                hatano = 002
                hatadurum.append(hatano)
                break
        a = kontip()
        kontlistesi.pop(0)
        kontdosya = ""
        for i in kontlistesi:
            kontdosya += i
            kontdosya += " "
        kontdosya=kontdosya[:-1]
        kontdosya=kontdosya.replace("*", "")
        try:
            kdosya=file(kontdosya).read()
        except:
            try:
                if len(doskont) == 1:
                    yol=os.path.split(doskont[0])[0]
                    os.chdir(yol)
                    kdosya=file(kontdosya).read()
                    pass
                else:
                    os.chdir(doskont[1])
                    kdosya=file(kontdosya).read()
                    pass
            except OSError, (hata_no, hata):
                hatano = 003
                hatadosya = kontdosya
                hatadurum.append(hatano)
                hatadurum.append(hatadosya)
                n += 1
                continue
            except IOError, (hata_no, hata):
                hatano = 003
                hatadosya = kontdosya
                hatadurum.append(hatano)
                hatadurum.append(hatadosya)
                n += 1
                continue
            except MemoryError:
                hatano = 004
                hatadosya = kontdosya
                hatadurum.append(hatano)
                hatadurum.append(hatadosya)
                n += 1
                continue
        a.update(kdosya)
        x = a.hexdigest() 
        if x==kontop:
            durum=True
            durumdosya=kontdosya
        else:
            durum=False
            durumdosya=kontdosya
        sondurum.append(durum)
        sondurum.append(durumdosya)
        n += 1

def ccheck(dosya, kontop):
    if len(kontop) == 32:
        kontip=hashlib.md5
    elif len(kontop) == 40:
        kontip=hashlib.sha1
    elif len(kontop) == 56:
        kontip=hashlib.sha224
    elif len(kontop) == 64:
        kontip=hashlib.sha256
    elif len(kontop) == 96:
        kontip=hashlib.sha384
    elif len(kontop) == 128:
        kontip=hashlib.sha512
    else:
        hatano=011
        hatadurum.append(hatano)
    if len(hatadurum) == 0:
        toplamver(kontip, dosya)
        if toplam == kontop:
            durum = True
            sondurum.append(durum)
            sondurum.append(dosya)
        else:
            durum = False
            sondurum.append(durum)
            sondurum.append(dosya)
